<?php

class Solicitudes_AutoevaluacionController extends Zend_Controller_Action
{
	private $nav;
	private $infoPrograma;
	private $codproceso;
	private $datosproceso;
	private $codestado;
	private $datos_comite;
	private $infoLista;
	
	
	
    public function init() {
//        $sesionProceso = new Zend_Session_Namespace("PROCESO");
//		$this->codproceso = $sesionProceso->codproceso;
		
        $sesionListas = new Zend_Session_Namespace("LISTAS");
        $this->codproceso = $sesionListas->infoLista["codproceso"];
        $this->infoLista  = $sesionListas->infoLista;
//        $this->infoLista["finalizada"]  = "S";
        
		$Proceso = new Solicitudes_Model_DetalleSolicitud();
        $this->datosproceso = $Proceso->cargardatosProceso($this->codproceso);
		
//		$this->view->infoPrograma = $Proceso->cargardatosPrograma($this->datosproceso["codprograma"]);
//        $this->codestado =  $Proceso->getEstadoProceso($this->codproceso);
//$this->view->infoPrograma["codproceso"] = $this->codproceso;

        $Programa = new Programas_Model_Programas();
		$this->view->infoPrograma = $Programa->getProgramas(array("codprograma"=>$this->datosproceso["codprograma"]));
		$this->view->infoPrograma[0]["codproceso"] = $this->codproceso;
		        
    	$this->nav = new App_Util_Navegacion();
		$this->nav->agregar_navegacion("Lista de solicitudes", "/solicitudes/index/lista","Lista de solicitudes");
        $this->nav->agregar_navegacion("Datos del comit&eacute; de autoevaluaci&oacute;n","","");
		$this->view->nav = $this->nav;
		
		
		$codinstitucion = App_User::getCodigoSede();
		
		if (empty($codinstitucion)){
		    $datos_solicitud = $Proceso->getDatosSolicitud($this->datosproceso["codsolicitud"]);
		    $codinstitucion = $datos_solicitud["codinstitucion"];
		}
		$autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
		$this->datos_comite = $autoevaluacion->getComiteIES($codinstitucion);
		
//        $this->_readonly = false;
//		if ($this->codestado != Solicitudes_Model_Historicoprocesos::EN_AUTOEVALUACION) {
//			$this->_readonly = true;
//			$this->_helper->layout()->setLayout("popup");
//		}
		
		//Resumen Informacion del programa (va en todos los actions)
		//$this->instituciones = new Instituciones_Model_Instituciones();
		//$infoinstitucion= $this->instituciones->cargardatosInfo($codinstitucion);
		//$this->view->infoInstitucion=$infoinstitucion;
    }

    public function indexAction() {
        $form = new Solicitudes_Form_Comite();
        $form->makeStatic($this->_readonly);
        $form->recoverFromRedirect();
        
        if (isset($this->datos_comite["codcomite"])){
            if ($this->datos_comite["tipo"]==4){
                $this->datos_comite["tipo"]=array(0=>1,1=>2);
            }else{
//                $this->datos_comite["tipo"]=array(0=>$datos_comite["tipo"]);
                $this->datos_comite["tipo"]=$this->datos_comite["tipo"];
            }
            $form->populate ( $this->datos_comite );
        }

        if (isset($this->datos_comite["coddocumento"]) && !empty($this->datos_comite["coddocumento"])){
            $adjunto = new Generales_Model_Documentos();
            $this->view->adjunto = $adjunto->cargarDatos($this->datos_comite["coddocumento"]);
        }
        $this->view->form = $form;
        
        $autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
        $form2 = new Solicitudes_Form_Miembros();
        $form2->makeStatic($this->_readonly);
        $form2->recoverFromRedirect();
        $codmiembro = $this->_getParam("codmiembro");
        if(!empty($codmiembro)){
            $form2->populate ($autoevaluacion->getMiembro($codmiembro));
        }
        if (isset($this->datos_comite["codcomite"]) && !empty($this->datos_comite["codcomite"])){
            $this->view->miembros = $autoevaluacion->getMiembros($this->datos_comite["codcomite"],"C");
        }
        $this->view->form2 = $form2;
        $this->view->listaestablecida = "N";
        if (isset($this->infoLista["codlista"])){
            $this->view->listaestablecida = $this->infoLista["finalizada"];
        }
//        $this->view->listaestablecida = "N";

    }
       
    public function guardarcomiteAction(){
        $form = new Solicitudes_Form_Comite();
        
        $guardar_datos = false;
        $tipo = $this->_getParam("tipo");
        if (!is_array($tipo)){
            $tipo = array("1");
        }
        if(in_array("2",$tipo)){
             $guardar_datos = true;
        }
        if((in_array("1",$tipo) || in_array("3",$tipo))&& $this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())){
            $guardar_datos = true;
        } else{
            $form->setStateRedirect();
//            foreach ($form->getMessages() as $key => $value) {
//            	$this->view->priorityMessenger("{$form->getElement($key)->getLabel()} ".array_shift($value), "error");
//            }
        }
        if ($guardar_datos){
			try {
				$autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
				$datos = $this->getRequest()->getPost();
				$datos["codinstitucion"] = App_User::getCodigoInstitucion() ;
//				$tipo = $datos["tipo"];
				unset($datos["tipo"]);
				$datos["tipo"]= (in_array("1",$tipo) && in_array("2",$tipo))?4:$tipo[0];
				$datos["otrotipo"]= ($datos["tipo"]!=3)?"":$datos["otrotipo"];
				unset($datos["coddocumento"]);
				
			    $datos_adj = $form->archivo->getFileInfo();
			    if (!empty($datos_adj["archivo"]["name"])){
				    $ext = pathinfo( $datos_adj["archivo"]["name"], PATHINFO_EXTENSION );
				    $nuevo_nombre = md5( uniqid().$datos_adj["archivo"]["name"]).".".$ext;
			        $form->archivo->addFilter('Rename', array('target'=>$form->archivo->getDestination(). "/{$nuevo_nombre}" ));
					if ($form->archivo->receive()) {
					    $datos_archivo["nombrereal"]   = $datos_adj["archivo"]["name"];
					    $datos_archivo["tipomime"]     = $datos_adj["archivo"]["type"];
					    $datos_archivo["tamano"]       = $datos_adj["archivo"]["size"];
					    $datos_archivo["nombrecodificado"] = $nuevo_nombre;
					    $datos_archivo["codusuario"]   = App_User::getCodigoUsuario();
	
//	                    if (isset($this->datos_comite["coddocumento"]) && !empty($this->datos_comite["coddocumento"])){
//					        $adjunto = new Generales_Model_Documentos();
//				            $adjunto->eliminarDocumento($this->datos_comite["coddocumento"]);
//	                    }
						$datos["coddocumento"]= $autoevaluacion->guardarAdjuntoComite($datos_archivo);
					}
			    }
				$autoevaluacion->guardarComite($datos);
				$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
			} catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
			}
        }
        
        $this->_helper->redirector("index");
	}

	
	public function guardarmiembroiesAction(){
        $form = new Solicitudes_Form_Miembros();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())){
			try {
				$autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
				$datos = $this->getRequest()->getPost();
				$datos["codcomite"] = $this->datos_comite["codcomite"];
				$autoevaluacion->guardarMiembro($datos);
				$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
			} catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
			}
        } else {
            $form->setStateRedirect();
            foreach ($form->getMessages() as $key => $value) {
            	$this->view->priorityMessenger("{$form->getElement($key)->getLabel()} ".array_shift($value), "error");
            }
        }
        $this->_helper->redirector("index");
    }

     public function eliminarmiembroAction(){
  	      try {
			  $autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
			  $autoevaluacion->eliminarMiembro($this->_getParam("codmiembro"));
			  $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
		$this->_helper->redirector("index");
	}
	
    public function ingresarseccionesAction() {
        $listasService = new Autoevaluacion_Model_Listas();
        $sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
        $actionConfig = Zend_Registry::get("actionConfig");
        $listas = $actionConfig->LISTA_FACTORES->toArray();
        $lalista =  $listas[$sesionSolicitud->tiposolicitud];
        
        $sesionProceso = new Zend_Session_Namespace("PROCESO");
        $infoLista = $listasService->getListaActiva("F",$lalista,$sesionProceso->codproceso);
        $codlista = $infoLista["codlista"];
        
        if (!$infoLista){
            $infoLista = $listasService->getListaActiva("F",$lalista,"","",true);
            if ($infoLista){
                 $codlista = $listasService->crearListaActiva("F",$lalista,$sesionProceso->codproceso,$infoLista["codlista"]);
            }else{
                $this->view->priorityMessenger("La plantilla para la generación de los factores no existe.", "error");
                $this->_helper->redirector("index");
            }
        }
    	$sesionListas = new Zend_Session_Namespace("LISTAS");
    	$sesionListas->infoLista = $listasService->getLista($codlista);
    	$sesionListas->infoSeccion = null;
    	$this->_helper->redirector("index", "secciones","autoevaluacion");
    }
    
    public function finalizarfactoresAction(){
        $sesionListas = new Zend_Session_Namespace("LISTAS");
        $listasService = new Listas_Model_Listas();
        $datos["codlista"]= $sesionListas->infoLista["codlista"];
        $datos["finalizada"]= "S";
        $listasService->guardarLista($datos);
        $sesionListas->infoLista["finalizada"]= "S";
        $this->_helper->redirector("index","detalleautoevaluacion");
    }
}

